using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using NiSis.Data;
using NiSis.Entities;
using NiSis.UserControls;
using NiSis.Loggin;

namespace NiSis
{
    public partial class Verifica : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                MeseAnnoPicker1.SelectCommandVisible = false;
                LoadGrid();
            }
        }
        protected int IdTraderPrecedente
        {
            get
            {
                int tp;
                int.TryParse(hdIdTp.Value, out tp);
                return tp;
            }
            set
            {
                hdIdTp.Value = value.ToString();
            }
        }
        protected void LoadGrid()
        {
            if (!MeseAnnoPicker1.HasSelectedItem())
                return;
            
            //VList<VBatchUtenze> rels = DataRepository.VBatchUtenzeProvider.Get(string.Format("dt_ins>'{0}'", MeseAnnoPicker1.DateTimeValue), string.Empty);
            VList<VBatchTraderPrecSt> tpSt = DataRepository.VBatchTraderPrecStProvider.Get(string.Format("cd_storico_mensile_rete='{0}' ", MeseAnnoPicker1.DateValue), "DsShipper, cd_pool,DsSocieta");
           
            GrdVerifica.DataSource = tpSt;
            GrdVerifica.DataBind();
            //GrdVerifica.Visible = tpSt.Count > 0;

            //------
            //TList<BatchRelazioni> rels = DataRepository.BatchRelazioniProvider.GetPaged(string.Format("dt_ins>'{0}'", MeseAnnoPicker1.DateTimeValue), "cd_pool,dt_ins", 0, 50, out mCount);
            //DataRepository.BatchRelazioniProvider.DeepLoad(rels);
            //GrdVerifica.Columns[1].Visible = true;
            //GrdVerifica.DataSource = rels;
            //GrdVerifica.DataBind();
            //GrdVerifica.Visible = rels.Count > 0;
            //PnlNota.Visible = rels.Count > 0;
            //GrdVerifica.Columns[1].Visible = false;
        }

        protected void cmdSelectShipper_Click(object sender, ImageClickEventArgs e)
        {
            LoadGrid();
        }

        protected void GrdVerifica_DataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                
                VBatchTraderPrecSt batch = (VBatchTraderPrecSt)e.Row.DataItem;
                    
                ImageButton btn =(ImageButton) e.Row.FindControl("cmdOpenSubgrid");
                btn.Attributes.Add("IdTraderPrecStorico", batch.IdTraderPrecStorico.ToString());
                btn.Attributes.Add("IdBatch", batch.IdBatch.ToString());
                btn.Attributes.Add("RowIndex", e.Row.RowIndex.ToString());

                btn = (ImageButton)e.Row.FindControl("btnAproveAll");
                btn.Attributes.Add("IdTraderPrecStorico", batch.IdTraderPrecStorico.ToString());
                btn.Attributes.Add("CdPool", batch.CdPool);
                btn.Attributes.Add("CdMese", batch.CdStoricoMensileRete);

                btn = (ImageButton)e.Row.FindControl("btnRejectAll");
                btn.Attributes.Add("IdTraderPrecStorico", batch.IdTraderPrecStorico.ToString());
                btn.Attributes.Add("CdPool", batch.CdPool);
                btn.Attributes.Add("CdMese", batch.CdStoricoMensileRete);

                btn = (ImageButton)e.Row.FindControl("btnEdit");
                btn.Attributes.Add("TargetUrl",
                    string.Format("guess.aspx?idbatch={0}",
                    batch.IdBatch));
            }
        }

        private void SetupGridUsers(ImageButton btn)
        {
            int index = int.Parse(btn.Attributes["RowIndex"]);

            GridViewRow row = GrdVerifica.Rows[index];
            ConfermaUtenze cUt = (ConfermaUtenze)row.FindControl("ConfermaUtenze1");
            cUt.Visible = (!cUt.Visible);
            
            if (cUt.Visible)
            {
                cUt.RefreshGrid(btn.Attributes["IdTraderPrecStorico"]);
                btn.ImageUrl = "~/Img/minus.png";
            }
            else
                btn.ImageUrl = "~/Img/Add.png";
        }
        protected void GrdVerifica_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandSource.GetType().Name != "ImageButton")
                return;

            ImageButton btn = (ImageButton)e.CommandSource;
            int idBatch;
            int.TryParse(btn.Attributes["idBatch"], out idBatch);

            string CdPool = btn.Attributes["CdPool"] ?? string.Empty;
            string CdMese = btn.Attributes["CdMese"] ?? string.Empty;

            int idTp;
            int.TryParse(btn.Attributes["IdTraderPrecStorico"], out idTp);
            IdTraderPrecedente = idTp; // tiene il valore dopo la postback           

            switch (btn.ID)
            {
                case "cmdOpenSubgrid":
                    SetupGridUsers(btn);
                    
                    break;
                case "btnAproveAll":
                    try
                    {
                        DataRepository.VTpPoolProvider.UpdateUtenzeState(idTp, (int)SshStatoRelazioniList.Confermato, string.Empty);
                        CustomUtil.UpdatePoolState(CdPool, CdMese);
                        Logger.Conferma("Operazione: Conferma, esito: successo");
                    }
                    catch (Exception ex)
                    {
                        Logger.ErroreGrave("Operazione: Conferma, esito: errore", ex);
                        throw;
                    }
                    LoadGrid();
                    break;

                case "btnRejectAll":
                    hdLastIdBatch.Value = idBatch.ToString();
                    RifiutoInputBox1.ShowPopup();
                    hdLastCdPool.Value = CdPool;
                    hdLastCdMese.Value = CdMese;

                    //DataRepository.VTpPoolProvider.UpdateUtenzeState(idTp, (int)SshStatoRelazioniList.Rifiutato);
                    //LoadGrid();
                    break;

                case "btnEdit":
                    Response.Redirect(btn.Attributes["TargetUrl"].ToString());
                    break;
            }
        }
        protected void RifiutoInputBox1_OnNewRifiutoSent(object sender, UserControls.RifiutoInputBox.NewRifiutoSentEventArgs e)
        {
            try
            {
                string cdPool = hdLastCdPool.Value;
                string cdMese = hdLastCdMese.Value;

                DataRepository.VTpPoolProvider.UpdateUtenzeState(IdTraderPrecedente, (int)SshStatoRelazioniList.Rifiutato, e.RifiutoText);

                CustomUtil.UpdatePoolState(cdPool, cdMese);

                Logger.Conferma("Operazione: Rifiuto, esito:Utenze rifiutate con successo");
            }
            catch (Exception ex)
            {
                Logger.ErroreGrave("Operazione: Rifiuto, esito:Errore mentre si rifiutavano delle utenze", ex);
                throw;
            }
           
            LoadGrid();

            hdLastCdMese.Value = string.Empty;
            hdLastCdPool.Value = string.Empty;
        }
        protected void ConfermaUtenze1_NoRowsInUtenze(object sender,UserControls.ConfermaUtenze.NoRowsInUtenzeEventArgs e)
        {
            LoadGrid();
            
        }
     
      
    }
}
